home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HyperLib 1997 Winter - Disc 1
/
HYPERLIB-1997-Winter-CD1.ISO.7z
/
HYPERLIB-1997-Winter-CD1.ISO
/
オンラインウェア
/
UTIL
/
Alpha 6.5.sit
/
Tcl
/
UserCode
/
Text Filters
/
Text Munging
/
travesty
< prev
next >
Wrap
Text File
|
1994-03-14
|
1KB
|
67 lines
#!/usr/bin/perl
# Usage: travesty [files]
# First analyze the input.
while (<>) {
# Handle article headers and ">>>" quotes.
next if /^¥./;
next if /^From / .. /^$/;
next if /^Path: / .. /^$/;
s/^¥W+//;
# Do each word.
push(@ary,split(' '));
while ($#ary > 1) {
$a = $p;
$p = $n;
$w = shift(@ary);
$n = $num{$w};
if ($n eq '') {
push(@word,$w);
$n = pack('S',$#word);
$num{$w} = $n;
}
$lookup{$a . $p} .= $n;
}
}
# Now spew out the words, based on the frequencies. If there
# is more than one possibility to choose from, choose one
# randomly.
for ($i=0;$i<100;$i++) {
$n = $lookup{$a . $p};
($foo,$n) = each(lookup) if $n eq ''; # A bootstrap.
$n = substr($n,int(rand(length($n))) & 0177776,2);
$a = $p;
$p = $n;
($w) = unpack('S',$n);
$w = $word[$w];
# See if word fits on line.
$col += length($w) + 1;
if ($col >= 65) {
$col = 0;
print "¥n";
}
else {
print ' ';
}
print $w;
# Paragraph every 10 sentences or so.
if ($w =~ /¥.$/) {
if (rand() < .1) {
print "¥n";
$col = 80;
}
}
}